/*
 * @Author: xudada 1820064201@qq.com
 * @Date: 2025-05-23 15:11:10
 * @LastEditors: xudada 1820064201@qq.com
 * @LastEditTime: 2025-05-23 16:35:46
 * @FilePath: /丁宇的/pfizer-parking-app/utils/request.js
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
const BASE_URL = 'https://admin.dlhrsw.xin/api/'

/**
 * 通用请求封装函数，简化 wx.request 调用
 * @param {Object} options - 请求配置项
 * @param {string} options.url - 请求地址（不包含 BASE_URL）
 * @param {string} [options.method='GET'] - 请求方法
 * @param {Object} [options.data={}] - 请求参数
 */
function request({ url, method = 'GET', data = {} }) {
  return new Promise((resolve, reject) => {
    wx.request({
      url: BASE_URL + url,
      method,
      data,
      header: {
        'Content-Type': 'application/json',
        Authorization: wx.getStorageSync('token')
      },
      success: (res) => {
        if (res.data.code === 200) {
          resolve(res.data) // 成功返回完整响应
        } else {
          reject(res.data) // 业务错误
        }
      },
      fail: reject // 网络错误
    })
  })
}

// 1. 根据小程序 code 获取 token 和手机号
export const getTokenByCode = (code) =>
  request({ url: `web/code`, method: 'POST', data: { code } })

// 2. 获取用户手机号（微信授权）
export const getPhoneNumber = (code) =>
  request({ url: `web/user/getPhoneNumber`, method: 'POST', data: { code } })

// 3. 绑定手机号到当前用户
export const bindPhoneNumber = (phoneNumber) =>
  request({
    url: `web/user/bindPhoneNumber`,
    method: 'POST',
    data: { phoneNumber }
  })

// 4. 获取可预约停车位的日期信息
export const getAvailableSpaces = (start_date) =>
  request({
    url: `web/user/availability`,
    method: 'POST',
    data: { start_date }
  })

// 5. 提交停车位预约申请（多个日期）
export const createReservation = (dates) =>
  request({
    url: `web/user/createReservation`,
    method: 'POST',
    data: { ...dates }
  })

// 6. 取消某个已预约的停车位（通过预约 ID）
export const cancelReservation = (id) =>
  request({
    url: `web/user/cancelReservation/${id}`,
    method: 'POST'
  })

// 7. 获取当前用户详细信息（包含用户资料和预约记录）
export const getUserInfo = () =>
  request({
    url: `web/user/info`,
    method: 'POST'
  })
